<?php

/*
 * SELECT 
	DISTINCT DATE_FORMAT(fecha_asignada,'%d/%m/%Y') AS fecha,
	COUNT(cod_turno) AS cirugias
FROM turnos 
WHERE tipo = 'C' 
AND estado != 'C'
BETWEEN 2010-01-01 AND 2010-11-29
GROUP BY fecha_asignada
 */
class class_cirugias {
	private $_db; 
	function __construct(){
		$this->config();
	}
	private function config(){
		require_once("conexion.php");
		$this->_db = new DataBase($SERVIDOR,$USUARIO,$PASSWORD,$BASE);
		mysql_query("SET NAMES utf8");
	}
	
	function method_getCirugias($params, $error){
		$filtro="";
		if($params[0]->canceladas == "0"){
			$filtro = " AND cirugias.estado != 'C' ";
		}
		$this->_db->setQuery("
			SELECT cirugias.*, turnos.*,
			CONCAT(pacientes.nombres,', ',pacientes.apellido) AS paciente,
			prestaciones.descripcion AS cirugia,
			usuarios.usuario AS medico,
			turnos.estado AS pago,
			cirugias.estado AS cirugia_estado,
			CONCAT(obras_sociales.descripcion,', ',planes.descripcion) AS obra_social
			FROM cirugias
			INNER JOIN turnos ON turnos.cod_turno = cirugias.cod_turno
			LEFT JOIN pacientes ON pacientes.dni_paciente = turnos.dni_paciente
			LEFT JOIN prestaciones ON prestaciones.cod_prestacion = cirugias.cod_prestacion
			LEFT JOIN usuarios ON usuarios.dni_usuario = turnos.dni_usuario
			LEFT JOIN planes ON planes.cod_plan = turnos.cod_plan
			LEFT JOIN obras_sociales ON obras_sociales.cod_obra_social = planes.cod_obra_social
			WHERE turnos.tipo = 'C'
			AND turnos.fecha_asignada = '".$params[0]->fecha_asignada."'
			AND cod_clinica = '".$params[0]->cod_clinica."'
			$filtro
			");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		$regs = $this->_db->loadResult();
		$result->values = array();
		$i=0;
        FOREACH ($regs as $reg)
		{
			$row = array();
			array_push($row, $reg->cod_turno);
			array_push($row, ++$i);
			array_push($row, $reg->hora_citado);
			array_push($row, $reg->paciente);
			array_push($row, $reg->cirugia);
			array_push($row, $reg->medico);
			if ($reg->obra_social != ""){
				array_push($row, $reg->obra_social);
			}
			else{
				array_push($row, 'PARTICULARES');
			}
			array_push($row, $reg->ojo);
			array_push($row, $reg->observaciones);
			array_push($row, $reg->cirugia_estado);
			if($reg->pago == 'E' OR $reg->pago == 'A'){
				array_push($row, 'S');				
			}
			else{
				array_push($row, 'N');
			}			
			if($reg->pago == 'A'){
				array_push($row, 'S');				
			}
			else{
				array_push($row, 'N');
			}						
			array_push($result->values, $row);
		}
		return $result;
	}	
	
	function method_cargaForm($params,$error){
		$this->_db->setQuery("
			SELECT 
				dni_usuario AS value, 
				CONCAT(apellido, ', ', nombres) AS label 
				FROM usuarios 
				WHERE cod_tipo_usuario = 3
				
		");
		$this->_db->alter();
		$result->resMed = $this->_db->loadResult();

		/*
		$this->_db->setQuery("
				SELECT 
					dni_paciente AS value, 
					CONCAT(dni_paciente, ' - ', apellido, ', ', nombres) AS label 
					FROM pacientes
		");
		$this->_db->alter();

		$result->resPac = $this->_db->loadResult();
		*/
		
		$this->_db->setQuery("
				SELECT cod_prestacion AS value, 
				descripcion AS label 
				FROM prestaciones 
				WHERE cod_prestacion_rubro = 1 
				ORDER BY descripcion"
		);
		$this->_db->alter();
		$result->resCir = $this->_db->loadResult();
		
		return $result;
					
	}
	function method_cargaFormModi($params,$error){
		$this->_db->setQuery("
		SELECT cirugias.cod_prestacion, cirugias.ojo, 
		cirugias.observaciones, cirugias.observaciones_factura, cirugias.hora_citado,
		cirugias.referencia, cirugias.estado AS confirma,
		turnos.dni_usuario, DATE_FORMAT(turnos.fecha_asignada,'%d/%m/%Y') AS fecha_asignada, turnos.dni_paciente, turnos.cod_clinica
		FROM cirugias
		INNER JOIN turnos ON turnos.cod_turno = cirugias.cod_turno
		LEFT JOIN pacientes ON pacientes.dni_paciente = turnos.dni_paciente
		LEFT JOIN usuarios ON usuarios.dni_usuario = turnos.dni_usuario
		WHERE turnos.cod_turno = '".$params[0]->cod_turno."'
		");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		return $this->_db->loadResult();			
	}
		function method_crearTurno($params,$error){
		if($params[0]->accion == "crear"){
			$this->_db->setQuery("
				INSERT INTO turnos (
					dni_usuario, 
					cod_clinica,
					dni_paciente, 
					fecha_asignada, 
					tipo, 
					estado
				)
				VALUES (
					'".$params[0]->dni_usuario."', 
					'".$params[0]->cod_clinica."',
					'".$params[0]->dni_paciente."', 
					'".$params[0]->fecha_asignada."',
					'C', 
					'N'
				)
				");
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . owFunciones::ErroresOw(mysql_errno()))); return $error; }
			$cod_turno=mysql_insert_id();
	
			$this->_db->setQuery("
				INSERT INTO cirugias (cod_prestacion, cod_turno, ojo, observaciones, observaciones_factura, hora_citado, referencia,  estado)
				VALUES ('".$params[0]->cod_prestacion."', '".$cod_turno."', '".$params[0]->ojo."','".$params[0]->observaciones."','".$params[0]->observaciones_factura."', '".$params[0]->hora_citado."', '".$params[0]->referencia."', '".$params[0]->confirma."')
				");
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }		
			return true;
		}			
		else if($params[0]->accion == "modificar"){
			$this->_db->setQuery("
				UPDATE cirugias SET
				ojo = '".$params[0]->ojo."',
				cod_prestacion = '".$params[0]->cod_prestacion."',
				observaciones = '".$params[0]->observaciones."',
				observaciones_factura = '".$params[0]->observaciones_factura."',
				hora_citado = '".$params[0]->hora_citado."',
				referencia = '".$params[0]->referencia."',				
				estado = '".$params[0]->confirma."'
				WHERE cod_turno = '".$params[0]->cod_turno."'
				LIMIT 1
				");
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
			$cod_turno=mysql_insert_id();
	
			$this->_db->setQuery("
				UPDATE turnos SET
				dni_usuario = '".$params[0]->dni_usuario."',
				cod_clinica = '".$params[0]->cod_clinica."',
				fecha_asignada = '".$params[0]->fecha_asignada."'				 
				WHERE cod_turno = '".$params[0]->cod_turno."'
				LIMIT 1
				");
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }		
			return true;
		}
	}
	function method_cancelarTurno($params, $error){
	$this->_db->setQuery("SELECT estado, cod_plan FROM turnos WHERE cod_turno = ".$params[0]->cod_turno." LIMIT 1");
	$this->_db->alter();
	$resEstado = $this->_db->loadResult();
		if($resEstado[0]->estado == 'E'){
			if($resEstado[0]->cod_plan != 0){
				$this->_db->setQuery("
					SELECT obras_sociales.tabla FROM obras_sociales
					LEFT JOIN planes ON planes.cod_obra_social = obras_sociales.cod_obra_social
					LEFT JOIN turnos ON turnos.cod_plan = planes.cod_plan
					WHERE cod_turno = ".$params[0]->cod_turno."
					LIMIT 1 
				");
				$this->_db->alter();
				if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
				$res = $this->_db->loadResult();
				
				$this->_db->setQuery("DELETE FROM os_".$res[0]->tabla." WHERE cod_turno ='".$params[0]->cod_turno."' LIMIT 1");
				$this->_db->alter();
				if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }				
			}
			else{
				$this->_db->setQuery("DELETE FROM os_contado WHERE cod_turno ='".$params[0]->cod_turno."' LIMIT 1");
				$this->_db->alter();
				if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }						
			}
		}
		$this->_db->setQuery("UPDATE turnos SET estado = 'C' WHERE cod_turno ='".$params[0]->cod_turno."' LIMIT 1");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
					
		$this->_db->setQuery("UPDATE cirugias SET estado = 'C' WHERE cod_turno ='".$params[0]->cod_turno."' LIMIT 1");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }		
		return true;
    }
	function method_cerrarTurno($params, $error){
		$this->_db->setQuery("UPDATE turnos SET estado = 'A' WHERE cod_turno ='".$params[0]->cod_turno."' LIMIT 1");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		
		$this->_db->setQuery("SELECT cod_plan FROM turnos WHERE cod_turno = ".$params[0]->cod_turno." LIMIT 1");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		$resPlan = $this->_db->loadResult();
		
/* 		if($resPlan[0]->cod_plan != 0){
			$this->_db->setQuery("
				SELECT obras_sociales.tabla FROM obras_sociales
				LEFT JOIN planes ON planes.cod_obra_social = obras_sociales.cod_obra_social
				LEFT JOIN turnos ON turnos.cod_plan = planes.cod_plan
				WHERE cod_turno = ".$params[0]->cod_turno."
				LIMIT 1 
			");
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
			$res = $this->_db->loadResult(); */
			
			$this->_db->setQuery("
				UPDATE turnos_os 
				SET estado = 'A' 
				WHERE cod_turno ='".$params[0]->cod_turno."' 
				LIMIT 1
			");
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }

			$this->_db->setQuery("
				INSERT INTO pacientes_atendidos (
					cod_turno, 
					observaciones, 
					fecha, 
					hora
			) 
				VALUES (
					'".$params[0]->cod_turno."', 
					'".$params[0]->observaciones."', 
					'".$params[0]->fecha."', 
					'".$params[0]->hora."
				')
			");
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
			return true;	
		}
		
		/* else{
			$this->_db->setQuery("UPDATE os_contado SET estado = 'A' WHERE cod_turno ='".$params[0]->cod_turno."' LIMIT 1");
			$this->_db->alter();
			if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
			return true;			
		} 
    }    */		
	function method_printCirOrden($params, $error){
		
		return("reports/cirOrden.php?fecha=".$params[0]->fecha);
	}
	function method_printCirTotal($params, $error){
		
		return("reports/cirTotal.php?fecha=".$params[0]->fecha);
	}
			
	//BUSCAR
	function method_cargaFormBuscar($params,$error){
		$this->_db->setQuery("
			SELECT 
				CONCAT(apellido,', ',nombres,' - ',dni_paciente) AS label,
				dni_paciente AS value
			FROM pacientes
		");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		$result->resPacientes = $this->_db->loadResult();		
		return $result;
	}
	function method_buscarCirugias($params,$error){
		$filtro="";
		if($params[0]->dni_paciente != ""){
			$filtro = " AND dni_paciente = '".$params[0]->dni_paciente."'";
		}
		$this->_db->setQuery("
			SELECT 
				DISTINCT DATE_FORMAT(fecha_asignada,'%d/%m/%Y') AS fecha,
				COUNT(cod_turno) AS cantidad
			FROM turnos 
			WHERE tipo = 'C' 
			AND fecha_asignada BETWEEN '".$params[0]->fechaD."' AND '".$params[0]->fechaH."'
			AND estado != 'C'
			".$filtro."
			GROUP BY fecha_asignada
		");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		$result->values = array();
		$regs = $this->_db->loadResult();
		$row = array();
    	FOREACH ($regs as $reg)
		{
			array_push($row, $reg->fecha);
			array_push($row, $reg->cantidad);
			array_push($result->values, $row);
			$row = array();
		}
		return $result;
	}
}
?>